package com.a_b.back_end.util.DAO.Impl;

import com.a_b.back_end.base.entity.Edge;
import com.a_b.back_end.util.DAO.edgeDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author agrinJPG
 * @date 2021/5/4 0:35
 * @Description edge 表 实现类
 */
@Repository
public class edgeDaoJdbcTemplateImpl implements edgeDao {
    @Autowired
    private NamedParameterJdbcTemplate jdbcTemplate;

    @Override
    public int add(Edge edge) {
        String sql = "insert into edge " +
                "values(:txId1,:txId2)";
        Map<String,Object> param = new HashMap<>();
        param.put("txId1",edge.getTxid1());
        param.put("txId2",edge.getTxid2());

        return (int)jdbcTemplate.update(sql,param);
    }

    @Override
    public int update(Edge edge) {
        return 0;
    }

    @Override
    public int delete(String txId1, String txId2) {
        return 0;
    }

    @Override
    public Edge findClasses(String txId1, String txId2) {
        String sql;
        if(txId1 != null) {
            sql = "select * from edge " +
                    "where txid1 =:txid1";
        } else {
            sql = "select * from edge " +
                    "where txid2 =:txid2";
        }
        Map<String,Object> param = new HashMap<>();
        param.put("txid1",txId1);
        param.put("txid2",txId2);
        RowMapper<Edge> res = new RowMapper<Edge>() {
            @Override
            public Edge mapRow(ResultSet resultSet, int i) throws SQLException {
                Edge edge = new Edge();
                edge.setTxid1(resultSet.getString("txId1"));
                edge.setTxid2(resultSet.getString("txId2"));
                return edge;
            }
        };
        List<Edge> results = jdbcTemplate.query(sql,param,res);
        Edge result = results.get(0);
        return result;
    }

    @Override
    public List<Edge> findClassesList() {
        return null;
    }
}
